export default {
    namespaced:true,
    state:()=>({
      cart: JSON.parse(uni.getStorageSync('cart') || '[]')
    }),
    mutations:{
      addToCart(state,goods){
        const findResult = state.cart.find(x=>x.goods_id === goods.goods_id)
        if(!findResult){
          state.cart.push(goods)
        }else {
          findResult.goods_count++
        }
        //通过commit方法，调用m_cart 命名空间下的saveToStorage方法
        this.commit('m_cart/saveToStorage')
      },
       saveToStorage(state){
         uni.setStorageSync('cart',JSON.stringify(state.cart))
       },
       //更新勾选状态
       updateGoodsState(state,goods){
         const findResult = state.cart.find(x=>x.goods_id === goods.goods_id)
         if(findResult){
           findResult.goods_state = goods.goods_state
            this.commit('m_cart/saveToStorage')
         }
       },
       //更新商品数量
       updateGoodsCount(state,goods){
         const findResult = state.cart.find(x=>x.goods_id === goods.goods_id)
         if(findResult){
           findResult.goods_count =goods.goods_count
           this.commit('m_cart/saveToStorage')
         }
       },
       //根据Id删除对应的商品
       removeGoodsById(state,goods_id){
         state.cart = state.cart.filter(x=>x.goods_id !==goods_id)
         this.commit('m_cart/saveToStorage')
       },
       //全选，全不选
       updateAllGoodsState(state,newState) {
            state.cart.forEach(x=>x.goods_state = newState)
            this.commit('m_cart/saveToStorage')
       },
     
    },
    getters:{
      total(state){
        // let c=0
        // state.cart.forEach(x=> c +=x.goods_count)
        // return c
        return state.cart.reduce((total,item)=>total +=item.goods_count,0)
      },
      //勾选的总数
      checkedCount(state){
        //这个0相当于初始值
          return state.cart.filter(x=>x.goods_state).reduce((total,item)=>total +=item.goods_count,0)
      },
      //打勾的总钱
      checkedGoodsAmount(state){
      return  state.cart.filter(x=>x.goods_state).reduce((total,item)=>total +=item.goods_count * item.goods_price,0).toFixed(2)
      }
    }
}